<?php

class Librarian_ReaderController extends Zend_Controller_Action
{

    /**
     * The default action
     */
    public function indexAction ()
    {
        $page = $this->getRequest()->getParam('page', 1);
        
        $readers = Model_Account::getAll(
                array(
                        'Type' => 1,
                        'Status' => 1,
                        'Page' => $page,
                        'Limit' => 10
                ), $total);
        
        $paginator = Core_Paginator::get($total, $page);
        
        $this->view->assign('pagination', $paginator);
        $this->view->assign('readers', $readers);
    }

    public function editAction ()
    {
        if ($this->getRequest()->isPost())
        {
            $params = $this->getRequest()->getPost();
            
            $response = array(
                'status' => 0,
                'message' => 'Unknown error...'
            );
            
            if ($params['action'] == 'account')
            {                                               
                
                if (! isset($params['Name']) || trim($params['Name'] == ''))
                {
                    $response['message'] = 'Bạn chưa nhập họ tên';
                }
                else if (! ($validateEmail = new Zend_Validate_EmailAddress()) || ! $validateEmail->isValid($params['Email']))
                {
                    $response['message'] = 'Email không hợp lệ';
                }
                else if (isset($params['Password']) && $params['Password'])
                {
                    if (strlen($params['Password']) < 6)
                    {
                        $response['message'] = 'Mật khẩu phải từ 6 ký tự trở lên';
                    }
                    else if ($params['Password'] != $params['PasswordConfirm'])
                    {
                        $response['message'] = 'Mật khẩu nhập lại không chính xác';
                    }
                }
                else if (! isset($params['IDNo']) || trim($params['IDNo']) == '' || ! intval($params['IDNo']))
                {
                    $response['message'] = 'Số CMND không hợp lệ';
                }
                else if (! checkdate($params['month'], $params['day'], $params['year']) || $params['year'] > date('Y') || $params['year'] < date('Y') - 100)
                {
                    $response['message'] = 'Ngày sinh không hợp lệ';
                }
                else
                {
                    $db = Core_Global::getDatabase();
                    $stmt = $db->query('SELECT 1 FROM Account WHERE Email = ? AND AccountID <> ?', 
                            array(
                                    $params['Email'],
                                    $params['AccountID']
                            ));
                    
                    if ($stmt->fetch() !== false)
                    {
                        $response['message'] = 'Email đã tồn tại, vui lòng chọn email khác';
                    }
                    else
                    {
                        $params['DOB'] = strtotime($params['year'] . '-' . $params['month'] . "-" . $params['day']);
                        $params['Avatar'] = null;
                        $params['CardID'] = 0;
                        $params['Type'] = 1;
                        
                        try
                        {
                            $accountId = Model_Account::edit($params);
                            
                            if ($accountId > 0)
                            {
                                $response['status'] = 1;
                                $response['message'] = 'Success';
                            }
                        }
                        catch (Zend_Db_Exception $e)
                        {
                            $response['message'] = $e->getMessage();
                        }
                    }
                }                                
            }
            else if ($params['action'] == 'card')
            {                                               
                if (! Zend_Date::isDate($params['CreateDate'], 'd/m/Y'))
                {
                    $response['message'] = 'Ngày bắt đầu không hợp lệ';
                }
                else if (! Zend_Date::isDate($params['ExpirationDate'], 'd/m/Y'))
                {
                    $response['message'] = 'Ngày hết hạn không hợp lệ';
                }
                else if ( ($params['CreateDate'] = strtotime(implode('-', array_reverse(explode('/', $params['CreateDate']))))) > 
                          ($params['ExpirationDate'] = strtotime(implode('-', array_reverse(explode('/', $params['ExpirationDate'])))))
                        )
                {
                    $response['message'] = 'Ngày hết hạn phải lớn hơn ngày bắt đầu';
                }
                else
                {                    
                   $params['Status'] = (isset($params['BlockCard'])) ? 0 : 1;
                   $params['Type'] = 1; 
                   
                   //Insert new card
                   if ($params['CardID'] == 0)
                   {                       
                       $cardId = Model_Card::create($params);
                       
                       if ($cardId > 0)
                       {
                           $response['status'] = 1;
                           $response['message'] = "Tạo thẻ thư viện thành công. Mã số thẻ: $cardId.";
                       }
                   }
                   //Update card
                   else
                   {                       
                       Model_Card::edit($params);
                       $response['status'] = 1;
                       $response['message'] = "Chỉnh sửa thông tin thẻ thành công.";
                   }
                }                                
            }
            
            $this->_helper->json($response);
        }
        
        $params = $this->getRequest()->getParams();
        
        if (! intval($params['reader_id']))
        {
            $this->_redirect('/librarian/reader');
        }
        
        $reader = Model_Account::get(array(
                'AccountID' => $params['reader_id'],
                'Status' => 1
        ));
        
        if (empty($reader))
        {
            $this->_redirect('/librarian/reader');
        }
        
        list ($reader['day'], $reader['month'], $reader['year']) = explode('/', date('d/m/Y', $reader['DOB']));
        
        $this->view->assign('reader', $reader);
    }
}
